Skip to content

Conversation

suquant
Copy link
Member

@suquant suquant commented Mar 14, 2012

Для кроссдоменных запросов добавляем поддержку JsonP и JsonXss

Кто не в теме что это такое можно почитать тут http://ru.wikipedia.org/wiki/JSON

(ранее было #73)

@stev
Copy link
Contributor

stev commented Mar 16, 2012

видимо не кто не в теме )

@AlexeyDsov
Copy link
Member

Ну презентация всегда приветствуется

@suquant
Copy link
Member Author

suquant commented Mar 16, 2012

На пальцах :)
К примеру вам надо сделать ajax запрос с a.exmaple.com -> b.example.com вы стандартнымы средствами HttpRequest-а это сделать не сможете (политика безоапсности) для этого придумали вот такую штуку

JSONP:
с a.example.com дрегается b.example.com/?callback=myFunction а b.example.com возврашет json обернутый в функцию myFunction(josn_data); который дальше eval-ится на стороне a.example.com - это есть JSONP (JsonPView)
пример a.example.com:

<script type="text/javascript" src="http://b.example.com/?callback=myFunc"></script>

Тут произойдет загрузка как бы скрипта и он сразу-же выполнится ;)

JSONXSS:
Представим себе что нам ajax-ом надо отправить форму с файлами :-), для этого мы сделаем вот что, создадим фрейм iframe туда запихаем эту форму у это формы дергаем метод submit(), ну и так как мы имеем доступ к некоторым свойстам фрейма, например к window.name, то мы может через это свойство получать ответы от стороннего сервера, вот по этому JsonXss отдает

<script type="text/javascript">
window.name='excaped json data';
</script>

вот этот кусок кода в iframe выполняется и мы в родительском окне через iframe.contenWindow.name получаем собственно наш ответ :-) ну а далее опять eval и бла бла бла ...

Вопрос:
Собственно зачем нам это все и зачем так через жопу когда можно нормально?
Ответ:
когда мы хотим сделать дейсвтительно юзабельные интерфейсы без перезагрузки страниц с кросс-доменными запросами то мы несомненно натыкнемся на эти вещи

Вопрос:
Зачем нам кроссдоменность и почему нельзя все в одном домене сделать?
Ответ:
Ну собственно некоторые сервисы у нас могут быть на различных доменах, да и после поправки в законодатсельство РФ теперь владельца(в) домена(ов) наказывают за размещенный там контент, иначе говоря если Вася Пупкин пользователь вашего сервиса example.com и он запостил детскую порнушку и она доступна на example.com то нагибать будут владельца example.com, а толи дело когда мы работаем с его персональным доменом, к примеру "pupkin.example.com" и все материалы с клиента(браузера) ходят через его персонализированный домен.

Вот такая вот ботва :-)

P.S. что только не придумается ради человеческого блага :-)

@petr-korobeinikov
Copy link

Может уже имеет смысл завязаться на html5 и xhr2?

@suquant
Copy link
Member Author

suquant commented Mar 16, 2012

Я предлагаю иметь такую поддержку у нас в системе.

Да и сейчас большая часть пользователей юзают браузеры которые не поддерживают HTML5-ые стандарты.

@AlexeyDsov
Copy link
Member

@pkorobeinikov может и имеет, но это не отменяет текущего request'а.

@suquant
Copy link
Member Author

suquant commented Mar 27, 2012

Ну что народ мержим с мастером ?

@stev
Copy link
Contributor

stev commented Mar 28, 2012

подождем, если до конца недели замечаний не возникнет, можно смело вливать в мастер

AlexeyDsov added a commit that referenced this pull request Apr 4, 2012
@AlexeyDsov AlexeyDsov merged commit 41f6edb into onPHP:master Apr 4, 2012
@AlexeyDsov
Copy link
Member

замержил, обновлю changelog и в 1.0 добавлю через cherry-pick

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants